package pruebas.testDesplazadores;

import org.junit.*;
import static org.junit.Assert.*;
import modelo.desplazadores.DesplazadorLineaRecta;
import modelo.util.Vector;

public class TestDesplazadorLineaRecta{
	
	private Vector pos1 = new Vector(0,0);
	private Vector pos2 = new Vector(0,1);
	private float velocidad = 1;
	private DesplazadorLineaRecta desplazador;
	
	@Before
	public void setUp(){
		desplazador = new DesplazadorLineaRecta(pos1,pos2,velocidad);
	}

	@Test
	public void testInicializacion(){
		assertEquals("Posicion inicial incorrecta", pos1, desplazador.getPosicion());
	}
	
	@Test
	public void testMover(){
		desplazador.mover();
		assertEquals("Siguiente posicion incorrecta",desplazador.getPosicion(),pos2);
		
		pos2 = pos2.sumar(pos2);
		desplazador.mover();
		assertEquals("No sigue avanzando en la direccion correcta",desplazador.getPosicion(),pos2);
	
		pos2 = new Vector(2,2).versor();
		desplazador = new DesplazadorLineaRecta(pos1,pos2,velocidad);
		desplazador.mover();
		assertEquals("Siguiente posicion incorrecta al mover en diagonal",desplazador.getPosicion(),pos2);
		
		pos2 = pos2.sumar(pos2);
		desplazador.mover();
		assertEquals("No sigue avanzando en la direccion correcta",desplazador.getPosicion(),pos2);
		
	}
		
	@Test
	public void testRetroceder(){
		desplazador.retroceder();
		pos2 = pos1.sumar(new Vector(0,-1));
		desplazador.mover();
		assertEquals("No retrocede adecuadamente",desplazador.getPosicion(),pos2);
	}
	
}
